//package com.spider.im.chat.message;
//
//import com.google.protobuf.Message;
//import com.google.protobuf.Parser;
//import com.spider.im.chat.message.MessageStrategy;
//
//import java.lang.reflect.ParameterizedType;
//import java.lang.reflect.Type;
//
//public abstract class TypedMessageRegistry<T extends Message> implements MessageStrategy<T> {
//
//    private final Parser<T> parser;
//    private final Class<T> messageClass;
//
//
//    @SuppressWarnings("unchecked")
//    public TypedMessageRegistry(Parser<T> parser) {
//        this.parser = parser;
//
//        Type superClass = getClass().getGenericSuperclass();
//        if (superClass instanceof ParameterizedType) {
//            Type actualType = ((ParameterizedType) superClass).getActualTypeArguments()[0];
//            this.messageClass = (Class<T>) actualType;
//        } else {
//            throw new RuntimeException("TypedMessageRegistry 必须使用泛型");
//        }
//    }
//
//    public HandlerAdapter<T> toAdapter() {
//        return new HandlerAdapter<>(messageClass, parser, this);
//    }
//}
